const map = new Map();

map.set(['a'], 555);//表面是针对同一个键，但实际上这是两个不同的数组实例，内存地址是不一样的，因此get方法无法读取该键
console.log(map.get(['a'])); // undefined 如果使用对象作为键名，就不用担心自己的属性与原作者的属性同名。

let map1 = new Map()
    .set(1, 'a')
    .set(2, 'b')
    .set(3, 'c');
console.log(map1);

const map2 = new Map([
    [1, 'one'],
    [2, 'two'],
    [3, 'three'],
]);[...map.entries()]// [[1,'one'], [2, 'two'], [3, 'three']]

const myMap = new Map()
    .set(true, 7)
    .set({ foo: 3 }, ['abc']);
console.log(typeof [...myMap], '--type');//Object
console.log(typeof myMap);//object
// [ [ true, 7 ], [ { foo: 3 }, [ 'abc' ] ] ]

function strMapToObj(strMap) {
    let obj = Object.create(null);//意思是原型是null
    for (let [k, v] of strMap) {
        obj[k] = v;
    }
    return obj;
}

const myMap1 = new Map()
    .set('yes', true)
    .set('no', false);
let re = strMapToObj(myMap1)
console.log(re);